﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Windows.Forms;
using KillProcesss;
using System.Threading;

namespace WindowsFormsApplication1
{
    static class Program
    {
        /// <summary>
        /// Главная точка входа для приложения.
        /// </summary>

        static Mutex mutex;

        [STAThread]
        static void Main()
        {
            if (EsliYjeZapyseno()) //проверка не запущено ли уже такое приложение(если мьютекс с таким именем уже был ранее создан)
            {
                MessageBox.Show("Приложение уже открыто!", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error);
                return;
            }

            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            Application.Run(new Form1());
        }

        static bool EsliYjeZapyseno()
        {
            bool createdNew;
            mutex = new Mutex(false, "MutexName", out createdNew); //инициялизирум мъютекса: - значение false(-то вызвавший поток не должен быть изначальным владельцем данного мьютекса т.е. мьютекс просто как флаг за щет переменной createdNew)
            return (!createdNew);                                    //                        - "MutexName" имя мьтекса,т.е. создаём именованный(системный) мьтекс чтобы потом при попытке повторного создания мьютакса с таким же именем но из др потока потерпеть неудачу
        }                                                            //                        - значение createdNew вернётся false в другом потоке если мьютекс с таким именем уже существует в системе,true - если был создан мьютекс без имени(локальный) или создаём новый мьютекс или с другим именем
    }

        //    public static void Main()
        //{
        //    // Instantiate a new instance of Form1.
        //    Form1 f1 = new Form1();
        //    // Display a messagebox. This shows the application 
        //    // is running, yet there is nothing shown to the user. 
        //    // This is the point at which you customize your form.
        //    System.Windows.Forms.MessageBox.Show("The application "
        //       + "is running now, but no forms have been shown.");
        //    // Customize the form.
        //    f1.Text = "Running Form";
        //    // Show the instance of the form modally.
        //    f1.ShowDialog();
        //}
}
